前面的教學已經有用到Middleware,但一直沒有補充細節
舉現實的例子來說,有點像去機場搭飛機,會先:
中介軟體就是像這樣層層把關的檢核點,而乘客就是互相傳遞的訊息,可以在前面過濾掉不歡迎的訪問
假設有三個中介軟體,那完整且沒有被中斷過程,從請求到回應,會像這樣:
請求-> Middleware 1-> Middleware 2-> Middleware 3 -> Middleware 2 -> Middleware 1->回應
那這邊可以注意到中介軟體的順序,就是處理訊息的順序,因此官方有推薦順序的安排
這些系統內建的功能,會自己呼叫next,去把訊息傳遞下去
// 強制使用安全的 HTTPS
app.UseHttpsRedirection();    
app.UseStaticFiles();         
// app.UseCookiePolicy();     
// 用來解析 URL 路由資訊
app.UseRouting();             
// app.UseRateLimiter();      
// app.UseRequestLocalization(); 
// 處理跨域存取限制
// app.UseCors();             
// 認證:你是誰
app.UseAuthentication();      
// 授權:你能不能做這件事
app.UseAuthorization();       
// app.UseSession();          
// app.UseResponseCompression(); 
// app.UseResponseCaching();  
app.MapRazorPages();          
app.MapDefaultControllerRoute(); 
藉由next.Invoke()把訊息傳遞下去,那前面範例內建的功能,已經先寫好這個行為,所以看不到這行指令
app.Use(async (context, next) =>
{
    // Do work that can write to the Response.
    await next.Invoke();
    // Do logging or other work that doesn't write to the Response.
});
不知不覺已經到21天了,我覺得最大的收穫應該是,找回瞬間收心的專注力吧